package com.example.test.advice.第八章_异常.建议115_使用Throwable获得栈信息;

public class FooTwo {

    public static void main(String[] args) {
        m2();
    }

    public static void m1(){
        m();
    }

    public static void m2(){
        m();
    }

    public static boolean m(){
        //取得当前栈信息
        StackTraceElement[] sts = new Throwable().getStackTrace();
        //检查是否是m1方法调用
        for(StackTraceElement st:sts){
            if(st.getMethodName().equals("m1")){
                return true;
            }
        }
        throw new RuntimeException("除m1方法外，该方法不允许其他方法调用");
    }
}
